package com.cloud.async.business.context.data.abs;

import java.util.concurrent.CompletableFuture;

/**
 * 抽象类数据接口
 *
 * @author chengrui
 */
public interface AbsDataSource {

    /**
     * 查询全部数量键值对
     * @return
     */
    int getCount();

    /**
     * 查询所有的键
     * @return
     */
    String[] getKeyNames();

    /**
     * 是否包含指定key
     * @param key
     * @return
     */
    boolean includeKey(String key);

    /**
     * 释放资源
     * @param key
     */
    void releaseData(String key);

    /**
     * 根据key获取value
     * @param key
     * @param milliSecond
     * @return
     */
    String getResult(String key, Long milliSecond);

    /**
     * 保存数据
     * @param key
     * @param value
     * @return
     */
    Boolean saveData(String key, CompletableFuture value);

}
